package thread;

public class yieldDemo {
    //yield()方法：
    //作用：让当前正在执行的线程释放CPU执行权，并把CPU执行权交给优先级高的线程。
    //注意：
    //yield()方法只是让当前线程释放CPU执行权，但是并不释放锁。

    //协作式任务：当多个线程需要“轮流”完成任务，而不是“争抢”CPU时。
    //避免线程饥饿：在某些情况下，可以防止低优先级线程长时间得不到执行。
    //调试和测试：在开发中，可以用来模拟特定的线程执行顺序，测试并发逻辑。
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.println("线程1：" + i);
                    if (i == 50) {
                        Thread.yield();//线程1释放CPU执行权
                    }
                }
            }
        };
        Thread t1 = new Thread(r, "线程1");
        t1.start();
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 50; i++) {
                    System.out.println(Thread.currentThread().getName() + ":" + i);

                }
            }
        };
        Thread t2 = new Thread(r1, "线程2");
        t2.start();

    }
}
